package com.cleaningcloud.cld.mapper;

import com.cleaningcloud.cld.domain.CldSettlement;
import com.cleaningcloud.cld.domain.dto.CldSettlementDto;
import com.cleaningcloud.cld.domain.vo.CldSettlementVo;

import java.util.List;
import java.util.Map;

/**
 * 结算管理Mapper接口
 *
 * @author cleaningcloud
 * @date 2024-10-17
 */
public interface CldSettlementMapper {
    /**
     * 查询结算管理
     *
     * @param settlementId 结算管理主键
     * @return 结算管理
     */
    CldSettlement selectCldSettlementBySettlementId(Long settlementId);


    /**
     * 查询结算管理
     *
     * @param invoiceId 结算管理主键
     * @return 结算管理
     */
    CldSettlement selectCldSettlementByInvoiceId(Long invoiceId);

    /**
     * 查询结算管理列表
     *
     * @param cldSettlement 结算管理
     * @return 结算管理集合
     */
    List<CldSettlementVo> selectCldSettlementList(CldSettlementDto cldSettlement);

    /**
     * 根据项目区域分组统计
     *
     * @param cldSettlementDto
     * @return
     */
    List<CldSettlementVo> selectCldSettlementGroupRegionList(CldSettlementDto cldSettlementDto);


    /**
     * 结算头部统计
     *
     * @param cldSettlementDto
     * @return
     */
    Map<String, Object> selectCldSettlementStatistics(CldSettlementDto cldSettlementDto);

    /**
     * 新增结算管理
     *
     * @param cldSettlement 结算管理
     * @return 结果
     */
    int insertCldSettlement(CldSettlement cldSettlement);

    /**
     * 修改结算管理
     *
     * @param cldSettlement 结算管理
     * @return 结果
     */
    int updateCldSettlement(CldSettlement cldSettlement);


    /**
     * 删除结算管理
     *
     * @param settlementId 结算管理主键
     * @return 结果
     */
    int deleteCldSettlementBySettlementId(Long settlementId);

    /**
     * 批量删除结算管理
     *
     * @param settlementIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteCldSettlementBySettlementIds(Long[] settlementIds);
}
